package net.lab1024.sa.admin.module.business.datasource.domain.form;

import lombok.Data;

import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.Max;

/**
 * 数据源表单
 *
 * @Author 1024创新实验室-主任:卓大
 * @Date 2024-01-01 00:00:00
 * @Wechat zhuoda1024
 * @Email lab1024@163.com
 * @Copyright <a href="https://1024lab.net">1024创新实验室</a>
 */
@Data
public class DatasourceForm {

    /**
     * 主键ID
     */
    private Long id;

    /**
     * 数据源名称
     */
    @NotBlank(message = "数据源名称不能为空")
    private String name;

    /**
     * 数据库类型
     */
    @NotBlank(message = "数据库类型不能为空")
    private String type;

    /**
     * 主机地址
     */
    @NotBlank(message = "主机地址不能为空")
    private String host;

    /**
     * 端口号
     */
    @NotNull(message = "端口号不能为空")
    @Min(value = 1, message = "端口号必须大于0")
    @Max(value = 65535, message = "端口号不能超过65535")
    private Integer port;

    /**
     * 数据库名
     */
    @NotBlank(message = "数据库名不能为空")
    private String databaseName;

    /**
     * 用户名
     */
    @NotBlank(message = "用户名不能为空")
    private String username;

    /**
     * 密码
     */
    @NotBlank(message = "密码不能为空")
    private String password;

    /**
     * 连接池大小
     */
    @NotNull(message = "连接池大小不能为空")
    @Min(value = 1, message = "连接池大小必须大于0")
    @Max(value = 100, message = "连接池大小不能超过100")
    private Integer connectionPoolSize;

    /**
     * 连接超时时间(秒)
     */
    @NotNull(message = "连接超时时间不能为空")
    @Min(value = 1, message = "连接超时时间必须大于0")
    @Max(value = 300, message = "连接超时时间不能超过300秒")
    private Integer timeout;

    /**
     * 状态(1:启用 0:禁用)
     */
    @NotNull(message = "状态不能为空")
    private Integer status;

    /**
     * 备注
     */
    private String remark;
} 